module teapo.storage.attached.indexedDB { export class StorageAccess implements attached.StorageAccess { constructor(private _db: IDBDatabase) { byFullPath: PropertiesByFullPath,
callback: (error: Error) => void): void { var transaction = this._db.transaction(['files', 'metadata'], 'readwrite');
transaction.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'update: transaction'));
var filesStore = transaction.objectStore('files'); var outstandingRequests = 1;
function oneError(errorEvent: ErrorEvent, moreDescription) { if (!outstandingRequests) return;
callback(wrapErrorEvent(errorEvent, moreDescription));
function oneCompleted() { if (!outstandingRequests) return;
for (var fullPath in byFullPath) if (byFullPath.hasOwnProperty(fullPath)) {↔} callback: (error: Error, properties: { [property: string]: string; }) => void): void { var transaction = this._db.transaction('files'); transaction.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'read: transaction'), null);
var filesStore = transaction.objectStore('files'); var getRequest = filesStore.get(fullPath);
getRequest.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'read: get(' + fullPath +')'), null); getRequest.onsuccess = (event) => { var fileData: FileData = getRequest.result;
callback(null, fileData.properties);
private _updateEditedUTC(now: number, transaction: IDBTransaction, callback: (errorEvent: ErrorEvent) => void) { var metadataStore = transaction.objectStore('metadata'); var metadataData = { property: 'editedUTC', value: Date.now() }; var putMetadata = metadataStore.put(metadataData);
putMetadata.onerror = (errorEvent) => callback(errorEvent);
putMetadata.onsuccess = (event) => callback(null);